/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mx.its.dsw2.biblioteca.bl;

import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import mx.its.dsw2.biblioteca.Dao.CategoriaDeLibroDaoLocal;
import mx.its.dsw2.biblioteca.Dao.LibroDaoLocal;
import mx.its.dsw2.biblioteca.enumeracion.EstadoTransaccion;
import mx.its.dsw2.biblioteca.modelo.Categoria;
import mx.its.dsw2.biblioteca.modelo.CategoriaDeLibro;
import mx.its.dsw2.biblioteca.modelo.Libro;


/**
 *
 * @author Pepe
 */
@Stateless
public class LibroBl implements LibroBlLocal {
    @EJB
    private CategoriaDeLibroDaoLocal categoriaDeLibroDao1;
    @EJB
    private CategoriaDeLibroDaoLocal categoriaDeLibroDao;
    @EJB
    private LibroDaoLocal libroDao;
    

    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")

    @Override
    public EstadoTransaccion Register(Libro book,List<Categoria>categories) {
    //   libroDao.find(book);
if(libroDao.findDuplicity(book)){
    return EstadoTransaccion.INCOMPLETO;
    //nada
}else{
    libroDao.create(book);
    for(Categoria c:categories){
        CategoriaDeLibro cdl=new CategoriaDeLibro();
        cdl.setIdCategoria(c);
        cdl.setIdLibro(book);
        categoriaDeLibroDao.create(cdl);
    }
    return EstadoTransaccion.COMPLETO;
}
    }

    @Override
    public EstadoTransaccion Modify(Libro book,List<Categoria>lista) {
//        if(book.getId()==null || libroDao.find(book.getId())==null){
//        return EstadoTransaccion.INCOMPLETO;
//        
//        }
//    else{
        libroDao.edit(book);
        List<CategoriaDeLibro> old = book.getCategoriadelibroList();
        for(CategoriaDeLibro c: old){
            categoriaDeLibroDao.remove(c);
            
        
    //libroDao.edit(book);
    //return EstadoTransaccion.COMPLETO;
}
        for(Categoria c:lista){
            CategoriaDeLibro cdl=new CategoriaDeLibro();
            cdl.setIdCategoria(c);
            cdl.getIdLibro();
            categoriaDeLibroDao.create(cdl);
            
        }
return EstadoTransaccion.COMPLETO;
    }
    @Override
    public EstadoTransaccion delete(Libro book) {
        if(book.getId()==null || libroDao.find(book.getId())==null){
        return EstadoTransaccion.INCOMPLETO;
        
        }
    else{
    libroDao.remove(book);
    return EstadoTransaccion.COMPLETO;
        
    }
        
    
}

    @Override
    public List<Libro> getAll() {
        return libroDao.findAll();
    }
    
}



